高维矩阵求逆的方法,inv、pinv、/ 您所在的位置:网站首页 近似奇异矩阵求逆 方差的方法是什么 高维矩阵求逆的方法,inv、pinv、/

高维矩阵求逆的方法,inv、pinv、/

2024-07-12 05:29| 来源: 网络整理| 查看: 265

1、inv 与 pinv

原文地址:点击打开链接

对于方阵A,如果为非奇异方阵,则存在逆矩阵inv(A)对于奇异矩阵或者非方阵,并不存在逆矩阵,但可以使用pinv(A)求其伪逆 (1)inv inv(A)*B 实际上可以写成A\BB*inv(A) 实际上可以写成B/A这样比求逆之后带入精度要高 A\B=pinv(A)*B  A/B=A*pinv(B) (2)pinv X=pinv(A),X=pinv(A,tol),其中tol为误差

pinv是求广义逆

先搞清楚什么是伪逆。对于方阵A,若有方阵B,使得:A·B=B·A=I,则称B为A的逆矩阵。如果矩阵A不是一个方阵,或者A是一个非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A'同型的矩阵B,使得:     A·B·A=A              B·A·B=B此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。因此伪逆阵与原阵相乘不一定是单位阵。

当A可逆时,B就是A的逆矩阵,否则就是广义逆。满足上面关系的A,B矩阵,有很多和逆矩阵相似的性质。

如果A为非奇异矩阵的话,虽然计算结果相同,但是pinv会消耗大量的计算时间。

在其他情况下,pinv具有inv的部分特性,但是不完全相同。

(3)\ 运算符

原文地址:点击打开链接

使用各类优化算法求逆都得不到好的结果,结果一个“\”运算居然很快就得到了很精确的解。这是个很奇妙的事情。因此,追求“\”的运算原理是很必要的。

 matlab的help中写道:

\   Backslash or left matrix divide.    A\B is the matrix division of A into B, which is roughly the    same as INV(A)*B , except it is computed in a different way.    If A is an N-by-N matrix and B is a column vector with N    components, or a matrix with several such columns, then    X = A\B is the solution to the equation A*X = B. A warning     message is printed if A is badly scaled or nearly singular.    A\EYE(SIZE(A)) produces the inverse of A.     If A is an M-by-N matrix with M < or > N and B is a column    vector with M components, or a matrix with several such columns,    then X = A\B is the solution in the least squares sense to the    under- or overdetermined system of equations A*X = B. The    effective rank, K, of A is determined from the QR decomposition    with pivoting. A solution X is computed which has at most K    nonzero components per column. If K < N this will usually not    be the same solution as PINV(A)*B.  A\EYE(SIZE(A)) produces a    generalized inverse of A.     C = mldivide(A,B) is called for the syntax 'A \ B' when A or B is an    object.

inv:Y=inv(X)返回方阵X的逆矩阵,如果X病态或者高度奇异,则会显示警告信息。实际上,很少需要真的把矩阵的逆求出来,常见的使用失误主要出现在求解线性方程组AX=b。一种求解方法为x=inv(A)*b,但如要达到更快,更稳定,就得用X=A\b。这个算法使用高斯消去法,因此不产生逆矩阵。

“\”:反斜线符号,矩阵左除。如果A是方阵,A\B近似等于inv(A)*B,只是他们的算法不一样。如果A是n*n的方阵,B是n*1的列向量,或n*?的矩阵,那么X=A\B是AX=B的解。如果A很病态或者很奇异,很会显示警告信息。A\EYE(SIZE(A))计算A的逆,参见mldivide可得到更多信息。如果A是m*n的矩阵,m!=n,B是m*1或m*?的列向量,那么X=A\B就是线性方程组AX=B(超定或者欠定)的最小二乘解。A的有效秩(effective rank)k有选主元的QR分解决定。Asolution X is computed that has at most k nonzero componentspercolumn。如果K,结果通常和pinv(A)*B不一样,后者是最小范数解。A\EYE(SIZE(A))用来求解A的广义逆。

mldivide(A,B):等价于A\B,A和B必须有一样多的行,除非A是个标量(这时就等于.\)。如果A是个方阵,A\B近似等于inv(A)*B,只是两者算法不一样。如果A是m*n的矩阵,那么X=A\B求解AX=B(超定或欠定)的最小二乘解,即(AX-B)的范数极小。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有